Cross-Entropy-Based Replay of Concurrent Programs

نویسندگان

  • Hana Chockler
  • Eitan Farchi
  • Benny Godlin
  • Sergey Novikov
چکیده

Replay is an important technique in program analysis, allowing to reproduce bugs, to track changes, and to repeat executions for better understanding of the results. Unfortunately, since re-executing a concurrent program does not necessarily produce the same ordering of events, replay of such programs becomes a dif cult task. The most common approach to replay of concurrent programs is based on analyzing the logical dependencies among concurrent events and requires a complete recording of the execution we are trying to replay as well as a complete control over the program's scheduler. In realistic settings, we usually have only a partial recording of the execution and only partial control over the scheduling decisions, thus such an analysis is often impossible. In this paper, we present an approach for replay in the presence of partial information and partial control. Our approach is based on a novel application of the cross-entropy method, and it does not require any logical analysis of dependencies among concurrent events. Roughly speaking, given a partial recording R of an execution, we de ne a performance function on executions, which reaches its maximum on R (or any other execution that coincides with R on the recorded events). Then, the program is executed many times in iterations, on each iteration adjusting the probabilistic scheduling decisions so that the performance function is maximized. Our method is also applicable to debugging of concurrent programs, in which the program is changed before it replayed in order to increase the information from its execution. We implemented our replay method on concurrent Java programs and we show that it consistently achieves a close replay in presence of incomplete information and incomplete control, as well as when the program is changed before it is replayed.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Record-Replay Debugging for Concurrent SCOOP Programs

We report on the implementation of a record-replay tool for programs written in SCOOP, an object-oriented programming model for concurrency. The tool enables developers to reproduce the nondeterministic execution of a concurrent program, a necessary prerequisite for debugging and testing. The implementation is based on Choi and Srinivasan’s approach of using logical thread schedules, which repr...

متن کامل

Probabilistic Replay of Java Programs on Multiprocessors

Alongside the rise of multiprocessor machines, the concurrent programming model has grown to near ubiquity, being the only possibility for developers wanting to take full advantage of their performance. Unfortunately, reasoning about concurrent programs is hard and bugs that stem from unanticipated interactions between tasks are easy to hatch. On the contrary, finding and fixing these bugs is a...

متن کامل

LEAP: The Lightweight Deterministic Multi-processor Replay of Concurrent Java Programs

The technique of deterministic record and replay aims at faithfully reenacting an earlier program execution. For concurrent programs, it is one of the most important techniques for program understanding and debugging. The state of the art deterministic replay techniques face challenging efficiency problems in supporting multi-processor executions due to the unoptimized treatment of shared memor...

متن کامل

Record-replay debugging for the SCOOP concurrency model

To support developers in writing reliable and efficient concurrent programs, novel concurrent programming abstractions have been proposed in recent years. Programming with such abstractions requires new analysis tools because the execution semantics often differs considerably from established models. We present a record-replay technique for programs written in SCOOP, an object-oriented programm...

متن کامل

Record and Replay of Multithreaded Applications

With the advent of multi-core processors, there is a strong motivation to write concurrent programs, that can fully exploit the parallelism offered by the hardware. Unfortunately, developing concurrent programs is a difficult task, prone to bugs that are difficult to find and to correct. Common concurrent programming paradigms, such as those relying on shared memory and explicit synchronization...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2009